// 监听引擎。为用户提供方便、智能的监听 
// 
//  _0403 表示监听
//  _0403_(sb|jp|zhi|gdt)_运作_节点id
// 
// 节点id   与事件方法分开写
// _0403_sb_dj_zj="ABC" 表示要监听的 节点id=ABC
// _0403_sb_dj  表示单击事件发生后，调用的方法

// 事件方法_节点id
// _0403_sb_dj_节点id
// 
function NW04_jt(fq) {
    this.nwDX = fq.fq;
    this.fq = fq;
    this.mrJD = '_jd';
    //存放 鼠标-单击 配置{主键,dx,dx.ffm}
    this.pz_sb = {
        anxia: [],      //【按下鼠标时的事件】
        songkai: [],    //【松开】---被按下去的鼠标----时的事件
        danji: [],      //【点击事件】
        shuangji: [],   //【双击事件】
        youji: [],      //【鼠标右击事件】
        yijin: [],      //【鼠标移进节点范围的事件】
        yichu: []       //【鼠标移出节点范围的事件】
    }

    this.pz_jp = {
        anxia: [],          //【按下】
        anzhu: [],          //【按住】 
        songkai: []         //【松开】 
    }

    this.pz_zhi = {
        gaibian: [],            //【值改变】
        shuru: []               //【值输入】 
    }

    this.pz_gdt = {
        gundong: []               //【滚动条】 
    }

    this.pz_cm = {
        ks: [],          //【开始】
        yd: [],          //【移动】 
        js: []           //【结束】 
    }

    this.pz_ck = {
        gb: []           //【结束】 
    }

    this.sbjt = new NW04_jt_sb(this);
    this.jpjt = new NW04_jt_jp(this);
    this.zhijt = new NW04_jt_zhi(this);
    this.gdtjt = new NW04_jt_gdt(this);
    this.cmjt = new NW04_jt_cm(this);
    this.ckjt = new NW04_jt_ck(this);
}

//监听用户对象；需要分析对象里面的配置。然后，根据配置，调用 tjRWdx 来创建一个监听任务
NW04_jt.prototype.jt = function (dx) {
    this.sbjt.tjRW(dx);//监听鼠标的事件。
    this.jpjt.tjRW(dx);
    this.zhijt.tjRW(dx);
    this.gdtjt.tjRW(dx);
    this.cmjt.tjRW(dx);
    this.ckjt.tjRW(dx)
}

/**
 * 添加一个监听任务 对象
 * @param {文本} jd_zj 节点id
 * @param {文本} ffm 方法名
 * @param {对象} dx 对象   当监听到节点事件时，框架会自动调用  dx[ffm](参数) 
 * @param {文本} lx 类型
 */
NW04_jt.prototype.tjRWdx = function (jd_zj, ffm, dx, lx) {
    let _nwDX = null;
    if (jd_zj) {
        _nwDX=this.nwDX.cj(jd_zj);
    }
    let _RW = new NW04_jt_gt(_nwDX, dx, ffm);//个体  封装（类型bean）
    switch (lx) {
        case 'sb_ax':
            this.pz_sb.anxia.push(_RW)//缓存 个体。方便调用
            _nwDX.jt.sb_ax(NW04_jt_fz_sb_ax); break;//创建 监听事件 触发后，会自动调用 NW04_jt_fz_sb_ax 函数
        case 'sb_sk':
            this.pz_sb.songkai.push(_RW)
            _nwDX.jt.sb_sk(NW04_jt_fz_sb_sk); break;
        case 'sb_dj':
            this.pz_sb.danji.push(_RW)
            _nwDX.jt.sb_dj(NW04_jt_fz_sb_dj); break;
        case 'sb_sj':
            this.pz_sb.shuangji.push(_RW)
            _nwDX.jt.sb_sj(NW04_jt_fz_sb_sj); break;
        case 'sb_yj':
            this.pz_sb.youji.push(_RW)
            _nwDX.jt.sb_yj(NW04_jt_fz_sb_yj); break;
        case 'sb_jr':
            this.pz_sb.yijin.push(_RW)
            _nwDX.jt.sb_jr(NW04_jt_fz_sb_jr); break;
        case 'sb_lk':
            this.pz_sb.yichu.push(_RW)
            _nwDX.jt.sb_lk(NW04_jt_fz_sb_lk); break;

        //监听键盘
        case 'jp_ax'://按下 
            this.pz_jp.anxia.push(_RW);
            _nwDX.jt.jp_ax(NW04_jt_fz_jp_ax); break;
        case 'jp_az': //按住不动
            this.pz_jp.anzhu.push(_RW);
            _nwDX.jt.jp_az(NW04_jt_fz_jp_az); break;
        case 'jp_sk'://松开
            this.pz_jp.songkai.push(_RW);
            _nwDX.jt.jp_sk(NW04_jt_fz_jp_sk); break;

        //值监听
        case 'z_gb': //【值-改变】
            this.pz_zhi.gaibian.push(_RW);
            _nwDX.jt.z_gb(NW04_jt_fz_z_gb); break;
        case 'z_sr':   //【值-输入】 
            this.pz_zhi.shuru.push(_RW);
            _nwDX.jt.z_sr(NW04_jt_fz_z_sr); break;

        // 滚动条
        case 'gdt_gd': //【滚动条】 
            this.pz_gdt.gundong.push(_RW);
            _nwDX.jt.gdt_gd(NW04_jt_fz_gdt_gd); break;

        // 触摸
        case 'cm_ks': //【触摸开始事件】 
            this.pz_cm.ks.push(_RW);
            _nwDX.jt.cm_ks(NW04_jt_fz_cm_ks); break;

        case 'cm_yd': //【触摸移动事件】 
            this.pz_cm.yd.push(_RW);
            _nwDX.jt.cm_yd(NW04_jt_fz_cm_yd); break;

        case 'cm_js': //【触摸移动事件】 
            this.pz_cm.js.push(_RW);
            _nwDX.jt.cm_js(NW04_jt_fz_cm_js); break;

        // 窗口事件
        case 'ck_gb':
            this.pz_ck.gb.push(_RW);
            break;
    }
}